Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

342
Visualizações
¿Cuál es el "actor actual" en el modelo Swift Concurrency?

Leyendo la sección de Concurrencia de la Guía Swift, me encontré con:

Para crear una tarea no estructurada que se ejecute en el actor actual, llame al Task.init(priority:operation:) . Para crear una tarea no estructurada que no forme parte del actor actual, conocida más específicamente como tarea separada, llame al método de clase Task.detached(priority:operation:) .

Está la frase "actor actual". Esto también se menciona en la documentación de Task.init :

Ejecuta la operación de no lanzamiento dada de forma asincrónica como parte de una nueva tarea de nivel superior en nombre del actor actual.

Antes, creía haber entendido lo que significaba "actor actual":

  • si el código se ejecuta en la cola principal, entonces el actor actual puede considerarse MainActor , ya que su ejecutor es la cola principal.
  • si el código está marcado con un atributo de actor global, entonces su actor actual es ese actor global
  • si el código está en un actor y no está nonisolated , entonces su actor actual es ese actor.
 @SomeOtherActor func somethingElse() { DispatchQueue.main.async { // current actor is MainActor } } @MainActor class Foo: NSObject { func foo() { /* current actor is MainActor */ } } actor Bar { func foo() { /* current actor is Bar */ } }

Sin embargo, recientemente me di cuenta de que olvidé considerar una situación: ¿qué sucede en una cola global (o cualquier otra cola aleatoria)?

 @SomeOtherActor func somethingElse() { DispatchQueue.global().async { // current actor is? } }

Cuando intenté acceder a una de las propiedades aisladas del actor de SomeOtherActor en el cierre, recibí el mensaje:

La propiedad 'x' aislada del actor global 'SomeOtherActor' no se puede mutar desde un contexto no aislado

¿Es esa la forma en que Swift dice que no hay un actor actual? Si es así, ¿qué hará Task.init ? La documentación realmente no dice.

Idealmente, ¿hay alguna forma de imprimir programáticamente al actor actual?

Pensé que las propuestas de SE explicarían qué significa "actor actual". Ninguna de las propuestas de SE menciona la palabra "actor actual": SE-0306 , SE-0313 , SE-0316 , SE-0327 , SE-0344 .

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda